<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- Object.create(prototype, [descriptors])
     -->
     <script>
        //  全局变量 - 不安全
        // var n = 0;

        //  以对象为原型，创建一个新的对象，并且可以对新对象的属性进行描述
        //Object.create(prototype, [descriptors])
        // prototype 原型对象
        // [descriptors] 对象属性的描述
        var obj = Object.create({},{
            name:{
                value:"洪源",
                writable:true, //是否可编辑，默认为false
                configurable:true,//是否可删除，默认为false
                enumerable:true //是否可遍历，默认为false
            },
            // Uncaught TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute, #<Object>
            // value、writeble 属性 和 get、set方法 只能允许存在一种。
            age:{
                // value:'18',
                get:function(){
                    //自动执行 ： 当属性被获取的时候 
                    // console.log("123");

                    // 返回值 就是age的值
                    // return n;

                    // console.log(this._age);

                    return this._age;
                },
                // 设置属性值
                set:function(val){
                    // 当属性被设置时，此函数才会自动执行
                    // console.log('设置了');

                    // console.log(val); //设置的value

                    // 将设置的val赋值给全局变量
                    // n = val;

                    // 当前函数下的this
                    // console.log(this);

                    // 给当前对象上添加一个_age临时私有属性
                    this._age = val;
                }
            }
        })

        // 设置属性
        obj.age = 666;

        // 获取属性
        console.log(obj.age);


     </script>
</body>
</html>